package org.example.codegenerate.modelext.WebVo.domian.table;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.example.codegenerate.modelext.WebVo.Enum.EnumTableType;
import org.example.codegenerate.modelext.WebVo.domian.column.ColumnVoDomain;
import org.hibernate.validator.constraints.Length;


import java.util.ArrayList;
import java.util.List;

@Data
@AllArgsConstructor

@NoArgsConstructor
public class TableVoDomain  {
    private static final long serialVersionUID = 1L;
    @Length(min=5,max=50)
    private String entityName="";// 页面上    实体类名
    @Length(min=5,max=50)
    private String tableName="";//表名 value = test_order_main                   页面-表名
    //private Integer tableType;//表类型 表类型: 0单表、1主表、2附表             页面-表类型
    private EnumTableType enumTableType=EnumTableType.SINGLETABLE;
    //private Integer tableVersion;//表版本号
    @Length(min=5,max=50)
    private String tableTxt="";//表说明                                           页面-表描述
    //private String isCheckbox;//是否带checkbox                                  显示复选框
    //private String isDbSynch;//同步数据库状态，默认为"N"                         页面上没有输入，后面有一个专门的动作
    //private String isPage;//是否分页                                              是否分页
    private String isTree="";//是否是树                                              是否树
    //private String idSequence;//主键生成序列,默认为null
    //private String idType;//主键类型 UUID                                        主键策略
    private String queryMode="";//查询模式 single 或group
    //private String formCategory;//表单分类，默认'bdfl_ptbd'                      表单分类-官方示例、测试表单、流程表单、导入表单
    private String formTemplate="";//PC表单模板                                      主题模板--默认主题，只有1个
    //private String themeTemplate;//主题模板 ，normal，innerTable
    //private String formTemplateMobile;//表单模板样式(移动端)
    //没有表单风格 ，1列，2列，3列，4列
    //private Integer copyType;//复制表类型1为复制表 0为原始表
    //private Integer copyVersion;//复制版本号
    //private String physicId;//原始表ID
    //private transient Integer hascopy;// 不需要在数据库保存，因为有transient
    private Integer scroll=1;//是否有横向滚动条  ，1，0                                     滚动条：有 无
    //private transient String taskId;//不需要在数据库保存，因为有transient
    //private String isDesForm;//是否用设计器表单
    //private String desFormCode;//设计器表单编码
    private String treeParentIdField=""; //                                           页面  树表单父ID ,pid
    private String treeIdField="";// has_child
    private String treeFieldname="";//name ，type_name

    private List<TableVoDomain> sonTabeleVoDomain=new ArrayList<>();
    
    //private List<TableVoDomain> parentTabeleVoDomain=new ArrayList<>();
    
    //子表的时候用到的页面用到
    private int relationType=0;//1,0,null    页面上，1对1 ，还是1对多
    private int tabOrderNum=0;//1,2,3,null    页面上序号

    //子表的时候用到的db用到
    private String[] originalForeignKeys=new String[]{""};
    private String[] originalForeignMainKeys=new String[]{""};
    private String[] foreignKeys=new String[]{""};
    private String[] foreignMainKeys=new String[]{""};
    private String foreignRelationType="0";

    private List<ColumnVoDomain> columnVoDomainList =new ArrayList<>();
}
